---
title: SAIF.Business.Claim.Legal operations and processes
summary: Business and technical operations supported by this library.
status: draft
owner: SAIF Documentation Generator
last_reviewed: 2026-08-21
library: SAIF.Business.Claim.Legal
reference_type: embedded
---

# SAIF.Business.Claim.Legal operations and processes

This page is the operation catalog and cross-operation hub for this library.

## Operation catalog
| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
| --- | --- | --- | --- | --- | --- | --- | --- |
| [Attorney assignment batch](operations/attorney-assignment-batch.md) | Run the automated attorney assignment batch and process results | Scheduled/manual batch run | Assignment run parameters | Assignment results, notifications, calendar updates | [BR-ASG-001](business-rules.md#br-asg-001-legal-case-evaluation-due-date-is-today-nextworkday-18), [BR-ASG-002](business-rules.md#br-asg-002-assignment-result-codes-ca-and-cac-trigger) | [SCHEDULE](database-tables.md#schedule) | [SQL-046](sql/sql-040-to-sql-119-reads.md), [SQL-048](sql/sql-040-to-sql-119-reads.md) |
| [Hearing scheduling and calendar sync](operations/hearing-scheduling-and-calendar-sync.md) | Create/update/delete hearing schedules and sync Exchange calendars | Save/delete on `clsLegalSchedule` | Schedule fields | Persisted schedule, Exchange appointments | [BR-SC-001](business-rules.md#br-sc-001-schedule-type-and-status-are-required), [BR-SC-009](business-rules.md#br-sc-009-a-case-may-have-only-one-schedule-in-set-or-reset-status) | [SCHEDULE](database-tables.md#schedule) | [SQL-011](sql/sql-001-to-sql-014-sequences.md), [SQL-033](sql/sql-015-to-sql-039-inserts.md), [SQL-101](sql/sql-040-to-sql-119-reads.md), [SQL-174](sql/sql-151-to-sql-183-updates.md), [SQL-200](sql/sql-184-to-sql-205-deletes.md) |
| [Case consolidation](operations/case-consolidation.md) | Merge secondary legal cases into a primary case | `ConsolidateCases(DPI)` call | Selected case DPI list | Consolidated case, copied schedules/notes/file locations | [BR-CO-001](business-rules.md#br-co-001-a-consolidation-must-contain-at-least-two-cases) | — | [SQL-076](sql/sql-040-to-sql-119-reads.md), [SQL-077](sql/sql-040-to-sql-119-reads.md), [SQL-163](sql/sql-151-to-sql-183-updates.md), [SQL-164](sql/sql-151-to-sql-183-updates.md) |
| [File creation / mailing](operations/file-creation-mailing.md) | Build legal case evaluations and set file-create/mail dates | `UpdateCreateFile(inDPI, mailedDate)` call | Selected case IDs, mailed date | LCE records, file-create date | [BR-CF-001](business-rules.md#br-cf-001-file-create-evaluations-are-due-%2B15-days%2C-or-%2B18-working) | — | [SQL-006](sql/sql-001-to-sql-014-sequences.md), [SQL-078](sql/sql-040-to-sql-119-reads.md), [SQL-165](sql/sql-151-to-sql-183-updates.md) |
| [Letter request generation](operations/letter-request-generation.md) | Retrieve and enrich legal letter requests for Xpressions output | Letter print job | Letter type, claim number | Xpressions XML payload, printed date | — | — | [SQL-102](sql/sql-040-to-sql-119-reads.md), [SQL-103](sql/sql-040-to-sql-119-reads.md), [SQL-175](sql/sql-151-to-sql-183-updates.md) |
| [Appeal brief deadline cascade](operations/appeal-brief-deadline-cascade.md) | Compute and cascade Brief 1/2/3 due dates on appeal save | Setting `Brief1Due`/`Brief1Filed` | Review level, filed/due dates | Cascaded Brief 2/3 due dates | [BR-AP-005](business-rules.md#br-ap-005-brief-1-duefiled-dates-cascade-to-brief-2%2C-which-cascades), [BR-AP-007](business-rules.md#br-ap-007-granted-extension-days-are-added-to-the-brief-2-and-brief-3) | — | [SQL-001](sql/sql-001-to-sql-014-sequences.md), [SQL-015](sql/sql-015-to-sql-039-inserts.md), [SQL-152](sql/sql-151-to-sql-183-updates.md) |
| [Code table loading](operations/code-table-loading.md) | Load and cache 31 code-table lookups | First access via `GetCodeTable(Of T)` | — | Cached code-table collections | — | — | [SQL-120 through SQL-150](sql/sql-120-to-sql-150-code-tables.md) |
| [Standard BOF persistence lifecycle](operations/standard-bof-persistence-lifecycle.md) | Create/retrieve/update/delete each business entity through Criteria SQL properties | `Save()` / `Create()` / `Delete()` on any entity | Entity property values | Persisted row, `RowsAffected` contention check | — | — | See per-class rows in [SQL catalog](sql/index.md) |

## Process flow diagram
The following diagram visualizes the primary attorney assignment operational flow.

```mermaid
flowchart TD
	Start([Start assignment batch]) --> MaxSeq[GetMaxSeq]
	MaxSeq --> RunProc[pk80005_assignment.run_assignment]
	RunProc --> GetResults[GetAssignmentResults]
	GetResults --> Decision{Result code?}
	Decision -->|CA| UpdateFL["updateFileLocation +<br>updateLCE"]
	Decision -->|CAC| UpdateFLConflict["updateFileLocation +<br>updateLCE + conflict<br>notification"]
	Decision -->|Other| Skip[No downstream update]
	UpdateFL --> SendNotif[SendNotifications]
	UpdateFLConflict --> SendNotif
	SendNotif --> UpdateOutlook[updateOutlook ASSIGN]
	UpdateOutlook --> End([End])
```

## Inherited operations and processes

No inherited operations from framework base classes were identified with sufficient evidence to document separately; all entity persistence lifecycle behavior (`Create()`/`Save()`/`Before*`/`After*` hooks) is provided by `SAIF.BOF.Framework.*` base classes but the specific inherited method bodies were not resolved for this run.*

## Database interactions

| Operation | SQL | Tables | Type |
| --- | --- | --- | --- |
| [Attorney assignment batch](operations/attorney-assignment-batch.md) | [SQL-046, SQL-048](sql/sql-040-to-sql-119-reads.md) | — (procedure-internal) | Read/Write |
| [Hearing scheduling and calendar sync](operations/hearing-scheduling-and-calendar-sync.md) | [SQL-011, SQL-033, SQL-101, SQL-174, SQL-200](sql/index.md) | [SCHEDULE](database-tables.md#schedule) | Read/Write |
| [Case consolidation](operations/case-consolidation.md) | [SQL-076, SQL-077, SQL-163, SQL-164](sql/sql-040-to-sql-119-reads.md) | — (procedure-internal) | Read/Write |
| [File creation / mailing](operations/file-creation-mailing.md) | [SQL-006, SQL-078, SQL-165](sql/index.md) | — (procedure-internal) | Read/Write |
| [Letter request generation](operations/letter-request-generation.md) | [SQL-102, SQL-103, SQL-175](sql/sql-040-to-sql-119-reads.md) | [LEGAL.VW_CASES](database-tables.md#legalvw_cases) | Read/Write |
| [Appeal brief deadline cascade](operations/appeal-brief-deadline-cascade.md) | [SQL-001, SQL-015, SQL-152](sql/index.md) | — (procedure-internal) | Read/Write |
| [Code table loading](operations/code-table-loading.md) | [SQL-120 through SQL-150](sql/sql-120-to-sql-150-code-tables.md) | Various `code` tables | Read |

## Failure and edge-case behavior
- Every `AfterInsert`/`AfterUpdate`/`AfterDelete` hook checks `RowsAffected <> 1` and raises `AddErrorMessage("InsertError"/"UpdateError"/"DeleteError", clsConstants.Messages.DBContentionError)` when the check fails — this is the library's optimistic-concurrency (lost-update) control for every inline-SQL entity.
- Unsupported CRUD operations on a `Criteria` class throw `New ApplicationException(clsConstants.Messages.InvalidSQLProperty)` rather than silently no-oping.
- Non-production environments (`GetApplicationEnvironment() <> ApplicationEnvironment.Prod`) redirect mailbox/calendar operations in `clsConsolidations`, `clsLegalSchedule`, and `clsAttorneySchedule` to test mailboxes (`ztstatt2`/`ztstatt3`/`ztstatt4`).
- `clsHearingLocation.CanDeleteLocation` and the `clsLegalPerson` delete guard enforce application-level referential integrity (a hearing location or legal person referenced elsewhere cannot be deleted).

## Stored procedure operations

Operations implemented in Oracle stored procedures referenced by this library. Real PL/SQL source (spec and, for `pk80001_legalnet`/`pk80005_assignment`, body) was retrieved via the Legends CLI; see [Procedures](procedures/index.md).

| Operation | Description | Source | Link |
| --- | --- | --- | --- |
| Legal case CRUD | Insert/retrieve/update/delete a legal case | `pk80001_legalnet.InsertLegalCase` / `getLegalCase` / `UpdateLegalCase` / `DeleteLegalCase` | [Details](procedures/pk80001_legalnet.md) |
| Case search | Resolve a case by identifier or search cases by claim ID list | `pk80001_legalnet.findCase` / `Casesearch` | [Details](procedures/pk80001_legalnet.md) |
| Hearing schedule lifecycle | Insert/update/delete hearing schedule rows and recompute hearing sequence | `pk80001_legalnet.insertSchedule` / `updateSchedule` / `deleteSchedule` / `updateHearingSeqNum` | [Details](procedures/pk80001_legalnet.md) |
| Appeal lifecycle | Insert/retrieve/update/delete appeals and appeal extensions | `pk80001_legalnet.insertAppeal` / `getAppeal` / `updateAppeal` / `deleteappeal` / `insertAppealExtension` / `updateAppealExtension` | [Details](procedures/pk80001_legalnet.md) |
| Case outcome lifecycle | Insert/retrieve/update/delete case outcomes, outcome issues, and outcome staff | `pk80001_legalnet.InsertCaseOutcome` / `GetCaseOutcome` / `updateCaseOutcome` / `DeleteCaseOutcome` / `updateOutcomeIssue` / `updateOutcomeStaff` | [Details](procedures/pk80001_legalnet.md) |
| Consolidation lifecycle | Merge/split consolidated legal cases and maintain hearing-sequence bookkeeping | `pk80001_legalnet.getConsolidatedCases` / `UpdateConsolidatedCase` / `checkOtherCases` | [Details](procedures/pk80001_legalnet.md) |
| File location lifecycle | Track and revert versioned legal-file physical location history | `pk80001_legalnet.getFileLocation` / `insertFileLocation` / `updateFileLocation` / `popfilelocation` | [Details](procedures/pk80001_legalnet.md) |
| Mail-date / OAR / reconsideration lifecycle | Build mail worklists and set OAR/reconsideration mail dates and flags | `pk80001_legalnet.mailDateList` / `setMailDate` / `setMailOARFlag` / `setNoMailDate` | [Details](procedures/pk80001_legalnet.md) |
| Attorney profile lifecycle | Insert/retrieve/update attorney profile records | `pk80001_legalnet.insertAttyProfile` / `getAttyProfile` / `updateAttyProfile` | [Details](procedures/pk80001_legalnet.md) |
| Attorney assignment run | Execute the attorney assignment batch — conflict/rotation/calendar/load checks and case-status/schedule updates | `pk80005_assignment.assignIt` / `assignItBalanced` / `insert_results` / `updateSchedule` | [Details](procedures/pk80005_assignment.md) |
| Assignment results review | Retrieve new/historical assignment results and lists | `pk80005_assignment.get_results` / `get_assign_results` / `get_assign_list` | [Details](procedures/pk80005_assignment.md) |
| Attorney conflict and schedule review | Surface past hearings, conflict hearings, and schedule conflicts for an attorney | `pk80005_assignment.getAttorneyPastHearings` / `getAttorneyConflictHearings` / `getAttorneyScheduleConflict` | [Details](procedures/pk80005_assignment.md) |
| Legal letter selection | Select and update legal letter requests | `pk82289_legalnet_letters.SelectLetterRequests` / `SelectLetter` / `UpdateLetterRequest` / `GetWorkerInfo` | [Details](procedures/pk82289_legalnet_letters.md) |

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Configuration](configuration.md)
- [Business rules](business-rules.md)
- [Database tables](database-tables.md)
- [SQL catalog](sql/index.md)
- [API reference](api/index.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources
- `SAIF.Business.Claim.Legal\LegalNet\clsAssignmentProcess.vb`
- `SAIF.Business.Claim.Legal\LegalNet\clsLegalSchedule.vb`
- `SAIF.Business.Claim.Legal\LegalNet\clsConsolidations.vb`
- `SAIF.Business.Claim.Legal\LegalNet\clsCreateFile.vb`
- `SAIF.Business.Claim.Legal\Print\clsLetterRequest.vb`
- `SAIF.Business.Claim.Legal\LegalNet\clsAppeal.vb`
- `SAIF.Business.Claim.Legal\mdlCodeTables.vb`
